// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Jouez dès maintenant sur MonsterWin Casino – Connectez-vous et tentez votre chance en ligne ! – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Jouez dès maintenant sur MonsterWin Casino – Connectez-vous et tentez votre chance en ligne !

Découvrez les Jeux de Casino en Ligne sur MonsterWin – Jouez Maintenant !

Vous êtes à la recherche d’une expérience de casino en ligne passionnante en France ? Ne cherchez pas plus loin que MonsterWin ! Découvrez une large sélection de jeux de casino en ligne, y compris les machines à sous, la roulette, le blackjack et bien plus encore. Jouez dès maintenant et profitez de graphismes époustouflants, de fonctionnalités de jeu innovantes et de gains potentiellement énormes. Que vous soyez un joueur débutant ou expérimenté, MonsterWin propose une expérience de jeu en ligne adaptée à tous les niveaux. Alors, qu’attendez-vous ? Découvrez les jeux de casino en ligne sur MonsterWin et jouez dès maintenant !

Inscrivez-vous sur MonsterWin Casino et Tentez votre Chance dès Maintenant !

Si vous êtes monsterwin casino à la recherche d’une expérience de casino en ligne passionnante en France, ne cherchez pas plus loin que MonsterWin Casino. Inscrivez-vous dès maintenant et tentez votre chance sur une large sélection de jeux de casino, y compris les machines à sous, la roulette, le blackjack et bien plus encore. En vous inscrivant sur MonsterWin Casino, vous aurez accès à des bonus et des promotions exclusives qui vous aideront à maximiser vos gains. De plus, notre plateforme de jeu sécurisée et conviviale garantit une expérience de jeu agréable et équitable. Alors qu’attendez-vous ? Inscrivez-vous sur MonsterWin Casino et tentez votre chance dès maintenant !

MonsterWin Casino : Jouez à vos Jeux de Casino Préférés en Ligne !

Le MonsterWin Casino est l’endroit idéal pour les amateurs de jeux de casino en ligne en France. Profitez d’une large sélection de jeux, y compris les machines à sous, la roulette, le blackjack et le poker. Jouez gratuitement ou pour de l’argent réel, selon vos préférences. Le casino offre une expérience de jeu en ligne sûre et sécurisée, avec des options de paiement pratiques et un service clientèle de qualité. Ne manquez pas l’occasion de gagner gros avec MonsterWin Casino. Inscrivez-vous dès maintenant et commencez à jouer à vos jeux de casino préférés en ligne !

Expérience de Jeu en Ligne Exceptionnelle sur MonsterWin Casino – Connectez-vous et Jouez !

Vivez une expérience de jeu en ligne exceptionnelle sur MonsterWin Casino ! Connectez-vous dès maintenant et plongez dans un univers de divertissement sans fin. Profitez de graphismes époustouflants, d’une large sélection de jeux et d’un service clientèle de qualité. Que vous soyez un joueur débutant ou expérimenté, MonsterWin Casino offre une expérience de jeu adaptée à tous les niveaux. Ne manquez pas l’occasion de remporter de gros gains et de vous amuser en même temps. Inscrivez-vous dès maintenant et découvrez pourquoi MonsterWin Casino est le choix privilégié des joueurs en ligne en France.

Jouez dès maintenant sur MonsterWin Casino - Connectez-vous et tentez votre chance en ligne !

Obtenez un Bonus de Bienvenue sur MonsterWin Casino et Jouez dès Maintenant !

Si vous êtes à la recherche d’une expérience de casino en ligne passionnante en France, ne cherchez pas plus loin que MonsterWin Casino. Inscrivez-vous dès maintenant et obtenez un généreux bonus de bienvenue pour commencer votre aventure. Avec une large sélection de jeux de casino, y compris les machines à sous, la roulette, le blackjack et le poker, vous êtes sûr de trouver votre bonheur. Ne manquez pas cette occasion de jouer dès maintenant et de découvrir tout ce que MonsterWin Casino a à offrir.

J’ai récemment découvert MonsterWin Casino et je dois dire que j’ai été agréablement surpris. Jouez dès maintenant sur MonsterWin Casino – Connectez-vous et tentez votre chance en ligne ! a rendu mon expérience de jeu en ligne encore plus excitante.

Je m’appelle Pierre, j’ai 35 ans et je suis un grand fan de jeux de casino en ligne. J’ai essayé de nombreux casinos en ligne différents, mais MonsterWin Casino est certainement l’un de mes préférés.

Le site est facile à naviguer et a une grande sélection de jeux de haute qualité. J’ai particulièrement aimé les machines à sous, qui sont amusantes et offrent de nombreuses fonctionnalités intéressantes.

Le service clientèle de MonsterWin Casino est également excellent. J’ai eu une question concernant un jeu et ils ont été très rapides pour répondre et m’aider à résoudre mon problème.

Dans l’ensemble, je recommande vivement MonsterWin Casino à tous ceux qui cherchent un excellent casino en ligne avec une grande sélection de jeux et un excellent service clientèle.

N’hésitez pas à essayer MonsterWin Casino dès maintenant en utilisant Jouez dès maintenant sur MonsterWin Casino – Connectez-vous et tentez votre chance en ligne ! Vous ne serez pas déçu.

————————————————————————————————————————————————————————————

Je m’appelle Marie, j’ai 28 ans et je suis une grande fan de jeux de table en ligne. J’ai récemment essayé MonsterWin Casino et j’ai été impressionnée par la qualité de leurs jeux.

Jouez dès maintenant sur MonsterWin Casino – Connectez-vous et tentez votre chance en ligne ! m’a permis de jouer à mes jeux préférés, comme le blackjack et la roulette, en ligne avec des croupiers en direct.

Les graphismes et les effets sonores sont excellents, ce qui rend l’expérience de jeu encore plus immersive. De plus, le site est facile à naviguer et offre une grande variété de jeux.

Le service clientèle de MonsterWin Casino est également excellent. J’ai eu une question concernant un dépôt et ils ont été très rapides pour répondre et m’aider à résoudre mon problème.

Dans l’ensemble, je recommande vivement MonsterWin Casino à tous ceux qui cherchent un excellent casino en ligne avec une grande sélection de jeux et un excellent service clientèle.

N’hésitez pas à essayer MonsterWin Casino dès maintenant en utilisant Jouez dès maintenant sur MonsterWin Casino – Connectez-vous et tentez votre chance en ligne ! Vous ne serez pas déçu.

Vous vous demandez comment commencer à jouer sur MonsterWin Casino ? Rien de plus simple, il vous suffit de vous connecter et de tenter votre chance en ligne dès maintenant !

En quelques clics, vous aurez accès à une large sélection de jeux de casino en ligne, tels que la roulette, le blackjack et les machines à sous.

Alors, n’hésitez plus et plongez dans l’univers de MonsterWin Casino pour une expérience de jeu inoubliable !

Design and Develop by Ovatheme